﻿Imports WiremetModel.Entities.OEM
Imports WiremetModel.Specification.GeneralSpecifications
Imports WiremetModel.Entities

Public Class frmWysylkaZakonczenie
    'formularz umożliwiający zakończenie wysyłki po wpisaniu przyczyny zakończenia wysyłki do danego zlecenia
    Private mvarDbHolder As clsDataBase
    Private mvarChanged As Boolean = False
    Private mvarZlecenieId As Integer
    Public mvarZakonczona As Boolean = False
    Private mvarZlecenie As clsInhZlecenie
    Private _unitOfWork As UnitOfWork

    Public Sub New(ByVal IdZlecenia As Integer)

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        _unitOfWork = New UnitOfWork()
        mvarZlecenieId = IdZlecenia
        lblPytanie.Text = "O NUMERZE " & mvarZlecenieId & " ?"
        Sprawdzenie()

    End Sub

    Private Sub Sprawdzenie()

        mvarZlecenie = New clsInhZlecenie(mvarZlecenieId, mvarDbHolder)

        If mvarZlecenie.OpisZakonczenia <> String.Empty Then
            grbDlaczego.Enabled = True
            txtOpisZakonczenia.Text = mvarZlecenie.OpisZakonczenia
            cmdAnuluj.Focus()
            mvarChanged = False
        End If

    End Sub


    'Private Sub Zapisz()

    '    Dim lvarZlecenie As New clsInhZlecenie(mvarZlecenieId, mvarDbHolder)


    '    mvarDbHolder.BeginTrans()
    '    'zmiana w tabeli "oem.zlecenie"
    '    With lvarZlecenie
    '        .StatusWysylkiID = 3
    '        .SatusID = 3
    '        .OpisZakonczenia = txtOpisZakonczenia.Text
    '        .Save(mvarDbHolder, VAR_ERROR_HANDLER)
    '    End With
    '    'zmiana w tabeli "tracking.zlecenia" 

    '    clsInhTrZlecenie.ZmienStatus(mvarDbHolder, clsInhTrZlecenie.PobierzIdZleceniaTr(mvarDbHolder, mvarZlecenieId), 6)
    '    mvarDbHolder.CommitTrans()


    '    MessageBox.Show("Zapisano do bazy.", "WIREMET")
    '    mvarZakonczona = True
    '    cmdZapisz.Enabled = False

    'End Sub


    Private Sub Zapisz()

        Dim zlecenieOemRepository As New Repository(Of Zlecenie)(_unitOfWork)
        Dim zlecenieTrackingRepository As New Repository(Of Tracking.Zlecenie)(_unitOfWork)
        Dim statusWysylkiRepository As New Repository(Of StatusWysylki)(_unitOfWork)
        Dim statusRepository As New Repository(Of Status)(_unitOfWork)
        Dim zlecenieIdSpecification As New IdSpecification(Of Zlecenie)(mvarZlecenieId)
        Dim statusWysylkiIdSpecification As New IdSpecification(Of StatusWysylki)(3)
        Dim statusWyslaneIdSpecification As New IdSpecification(Of Status)(3)
        Dim statusProdukcjaIdSpefication As New IdSpecification(Of Status)(6)

        Dim zlecenieOem As Zlecenie = zlecenieOemRepository.GetEntityMatching(zlecenieIdSpecification)
        Dim zlecenieTracking As Tracking.Zlecenie = zlecenieOem.ZlecenieTracking.FirstOrDefault()
        Dim statusWysylki As StatusWysylki = statusWysylkiRepository.GetEntityMatching(statusWysylkiIdSpecification)
        Dim statusWyslane As Status = statusRepository.GetEntityMatching(statusWyslaneIdSpecification)
        Dim statusProdukcja As Status = statusRepository.GetEntityMatching(statusProdukcjaIdSpefication)

        zlecenieOem.StatusWysylki = StatusWysylki
        zlecenieOem.Status = statusWyslane
        zlecenieTracking.Status = statusProdukcja
        zlecenieOem.OpisZakonczenia = txtOpisZakonczenia.Text.Trim()


        _unitOfWork.BeginTransaction()
        zlecenieOemRepository.Update(zlecenieOem)
        zlecenieTrackingRepository.Update(zlecenieTracking)
        _unitOfWork.CommitTransaction()

        MessageBox.Show("Zapisano do bazy.", "WIREMET")
        mvarZakonczona = True
        cmdZapisz.Enabled = False

        User.ToString()

    End Sub


    Private Sub cmdTak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTak.Click
        grbDlaczego.Enabled = True
        cmdTak.Enabled = False
        cmdNie.Enabled = False
    End Sub

    Private Sub cmdNie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNie.Click
        Me.Close()
    End Sub

    Private Sub cmdAnuluj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnuluj.Click
        Me.Close()
    End Sub

    Private Sub cmdZapisz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZapisz.Click

        If txtOpisZakonczenia.Text <> String.Empty Then
            Zapisz()
        Else
            MessageBox.Show("Aby zakończyć wysyłkę konieczne jest podanie powodu zakończenia.", "WIREMET")
        End If

    End Sub


    Private Sub frmZakonczenieWysylki_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        mvarDbHolder.Close()
        _unitOfWork.Dispose()
    End Sub

    Private Sub frmZakonczenieWysylki_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If mvarChanged And cmdZapisz.Enabled = True Then
            Select Case MsgBox("Czy zapisać wprowadzone zmiany do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    Zapisz()
            End Select
        End If
    End Sub


    Private Sub txtOpisZakonczenia_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtOpisZakonczenia.TextChanged
        mvarChanged = True
    End Sub

End Class